package org.example.myleet.p1122;

/**
 * 收集别人的秒解，桶排序
 * 此解法的局限性在于数字大小已知是1000及以内
 */
public class Solution2 {
    public int[] relativeSortArray(int[] arr1, int[] arr2) {
        //nums的各个位置本来就是已经按顺序的，因此未出现的数字在这里记录其实已经自动排好序了
        int[] nums = new int[1001];
        int[] res = new int[arr1.length];
        //遍历arr1,统计每个元素的数量
        for (int i : arr1) {
            nums[i]++;
        }
        //遍历arr2,处理arr2中出现的元素
        int index = 0;
        for (int i : arr2) {
            while (nums[i]>0){
                res[index++] = i;
                nums[i]--;
            }
        }
        //遍历nums,处理剩下arr2中未出现的元素
        for (int i = 0; i < nums.length; i++) {
            while (nums[i]>0){
                res[index++] = i;
                nums[i]--;
            }
        }
        return res;
    }
}
